package JZ.JZ57;


import org.junit.Test;

/**
 * 题目描述
 * 给你一根长度为n的绳子，请把绳子剪成整数长的m段（m、n都是整数，n>1并且m>1，m<=n），
 * 每段绳子的长度记为k[1],...,k[m]。
 * 请问k[1]x...xk[m]可能的最大乘积是多少？
 * 例如，当绳子的长度是8时，我们把它剪成长度分别为2、3、3的三段，
 * 此时得到的最大乘积是18。
 * @author corn
 * @create 2020-07-20-20:04
 */
public class CutRope {
    @Test
    public void Test1(){
        Solution solution = new Solution();
        for (int i = 2; i <= 62; i++) {
            System.out.println(solution.cutRope(i));
        }
    }
    
}
class Solution {
    public  long cutRope(int target) {
        //贪心算法
        int result = 0;
        for (int i = 2; i <= target; i++) {
            int n = target / i, c = target % i;
            int ans = (int) (Math.pow(n, i - c) * Math.pow(n + 1, c));
            if (ans > result) {
                result = ans;
            }
        }
        return result;
    }
}
